import os

# 输入和输出目录（注意此处输出目录名与题目要求保持一致：B_onputs）
in_dir = r"C:\Users\ASUS\Desktop\2025-BBUCPC\2025校赛出题\B题\B_inputs"
out_dir = r"C:\Users\ASUS\Desktop\2025-BBUCPC\2025校赛出题\B题\B_outputs"
os.makedirs(out_dir, exist_ok=True)

# 获取所有输入文件，按文件名数字顺序排序（例如 1.in, 2.in, ...）
in_files = sorted([f for f in os.listdir(in_dir) if f.endswith('.in')],
                  key=lambda x: int(x.split('.')[0]))

# 遍历每个测试点文件
for filename in in_files:
    in_path = os.path.join(in_dir, filename)
    out_path = os.path.join(out_dir, filename.replace('.in', '.out'))
    
    with open(in_path, 'r') as fin:
        lines = fin.read().splitlines()
    
    # 第一行是字符串数量 n
    n = int(lines[0])
    strs = lines[1:]
    
    # 计算所有字符串的最大长度
    L = max(len(s) for s in strs)
    
    output_lines = []
    # 模拟标程逻辑：对 m 从 0 到 L-1 进行处理
    for m in range(L):
        ss = []
        # 从最后一个字符串到第一个字符串依次取第 m 个字符，若不存在则填 '*'
        for j in range(n-1, -1, -1):
            if len(strs[j]) > m:
                ss.append(strs[j][m])
            else:
                ss.append('*')
        # 去掉 ss 末尾多余的 '*' 字符
        while ss and ss[-1] == '*':
            ss.pop()
        output_lines.append(''.join(ss))
    
    # 将生成的输出写入对应的 .out 文件
    with open(out_path, 'w') as fout:
        fout.write("\n".join(output_lines))

print("生成20个测试点的输出文件完成！")
